﻿
using System;
using System.Collections.Generic;
using System.Text;
using System.Data.SqlClient;//biblioteca do sql
using System.Data;//para usa de procedure
using Sistema.Modelo;//pacote modelo
using Sistema.Dao;//pacote Dao para converter mensagem

namespace Sistema.Dao
{
    class PaisDao
    {
        Mensagens men = new Mensagens();
        SqlDataAdapter dr;
        String Mensagem;
        ///
        ///
        ///
        ///
        public String getMensagem()//metodo de retorno de resultado de pesquisa
        {
            return Mensagem;
        }
        ///
        ///
        ///
        ///
        public SqlDataAdapter getSelect()//metodo de retorno de resultado de pesquisa
        {
            return dr;
        }
        ///
        ///
        ///
        ///
        public void SelecionarPais(String Busca, int selecao)
        {
            try
            {
                String[] stringconecao = new String[5];//string em array para armazenar mais de um tipo de selecao
                stringconecao[0] = "SELECT * FROM Pais ;";
                stringconecao[1] = "SELECT * FROM Pais WHERE Pais_Nome like '%" + Busca + "%';";
                stringconecao[2] = "SELECT * FROM Pais WHERE Pais_Nome like '" + Busca + "%'";
                stringconecao[3] = "SELECT * FROM Pais WHERE Pais_Nome = '" + Busca + "'";
                stringconecao[4] = "SELECT * FROM Pais WHERE Pais_Codigo = '" + Busca + "'";


              
                StringConecao con = new StringConecao();
                string sqlcon = con.getconecao();
                SqlConnection sqlconn = new SqlConnection(sqlcon);
                sqlconn.Open();
                string mSQL = stringconecao[selecao];
                SqlCommand crm = new SqlCommand(mSQL, sqlconn);
                this.dr = new SqlDataAdapter(crm);
                sqlconn.Close();
            }
            catch (Exception ex)
            {
                Mensagem = "Erro na execução com o banco de dados" + "\n" + Convert.ToString(ex);
            }
        }
        ///
        ///
        ///
        ///
        public void ExecutarProcedimentoPais(PaisMod a, int Procedimento)
        {
            try
            {
                int CodigoPais = Convert.ToInt16(null);
                String Pais = null;
                int Operacao = Procedimento;
                int NovoCodigo = Convert.ToInt16(null);
                int Retorno = 0;


                if (Procedimento == 1)
                {//Cadastrar
                    Pais = a.Pais;
                }
                ////////////////////
                else if (Procedimento == 2)
                {//Alterar
                    CodigoPais = a.Codigo;
                    Pais = a.Pais;
                }
                ////////////////////
                else if (Procedimento == 3)
                {//Excluir
                    CodigoPais = a.Codigo;
                   // Pais = a.Pais;
                }
                ////////////////////

                StringConecao con = new StringConecao();
                string sqlcon = con.getconecao();
                SqlConnection sqlconn = new SqlConnection(sqlcon);
                sqlconn.Open();
                string mSQL;//variavel passa o nome da procidore
                mSQL = "SP_Update_Pais";
                SqlCommand crm = new SqlCommand(mSQL, sqlconn);

                crm.CommandType = CommandType.StoredProcedure;
                crm.Parameters.Add("@Pais_Codigo", SqlDbType.VarChar).Value = CodigoPais;
                crm.Parameters.Add("@Pais", SqlDbType.VarChar).Value = Pais;
                crm.Parameters.Add("@Operacao", SqlDbType.VarChar).Value = Operacao;
                crm.Parameters.Add("@Novocodigo", SqlDbType.VarChar).Value = NovoCodigo;
                crm.Parameters.Add("@Retorno", SqlDbType.VarChar).Value = "";
                // crm.Parameters.Add("@Estado_Data_Cadastro", SqlDbType.VarChar).Value = Estado_Data_Cadastro;
                

                var returnParameter = crm.Parameters.Add("@retorno", SqlDbType.Int);//comando para selecionar o retorno da procedimento
                returnParameter.Direction = ParameterDirection.ReturnValue;//retorno do procedimento

                crm.ExecuteNonQuery();
                Mensagem = men.getGerarMensagem(returnParameter.Scale.ToString()/*converte a mensagem recebida*/);//recebendo a variavel
                sqlconn.Close();
            }
            catch (Exception ex)
            {
                Mensagem = "Erro na execução com o banco de dados" + "\n" + Convert.ToString(ex);
            }

        }
        ///
        ///
        ///
        ///

    }
}
